package com.xjcs.saplingplan.wxapi

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import com.tencent.mm.opensdk.constants.ConstantsAPI
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import com.tencent.mm.opensdk.openapi.WXAPIFactory

class WXEntryActivity : Activity(), IWXAPIEventHandler {
    private var api: IWXAPI? = null

    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)


        // 通过WXAPIFactory工厂，获取IWXAPI的实例
        api = WXAPIFactory.createWXAPI(this, "你的微信APP_ID", false)
        api?.handleIntent(intent, this)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        api?.handleIntent(intent, this)
    }

    // 微信发送请求到第三方应用时，会回调到该方法
    override fun onReq(req: BaseReq) {
        // 这里可以处理微信的请求（通常不需要处理）
    }

    // 第三方应用发送请求到微信后的回调结果
    override fun onResp(resp: BaseResp) {
        when (resp.type) {
            ConstantsAPI.COMMAND_PAY_BY_WX -> handlePayResponse(resp)
            ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX -> handleShareResponse(resp)
            else -> finish()
        }
    }

    /**
     * 处理微信支付回调
     */
    private fun handlePayResponse(resp: BaseResp) {
        val result = when (resp.errCode) {
            BaseResp.ErrCode.ERR_OK -> "支付成功"
            BaseResp.ErrCode.ERR_USER_CANCEL -> "支付取消"
            BaseResp.ErrCode.ERR_AUTH_DENIED -> "支付被拒绝"
            else -> "支付失败（错误码：" + resp.errCode + "）"
        }
        Toast.makeText(this, result, Toast.LENGTH_SHORT).show()
        finish()
    }

    /**
     * 处理微信分享回调
     */
    private fun handleShareResponse(resp: BaseResp) {
        val result = when (resp.errCode) {
            BaseResp.ErrCode.ERR_OK -> "分享成功"
            BaseResp.ErrCode.ERR_USER_CANCEL -> "分享取消"
            BaseResp.ErrCode.ERR_AUTH_DENIED -> "分享被拒绝"
            BaseResp.ErrCode.ERR_UNSUPPORT -> "不支持分享"
            else -> "分享失败（错误码：" + resp.errCode + "）"
        }
        Toast.makeText(this, result, Toast.LENGTH_SHORT).show()
        finish()
    }
}